package br.ufes.ceunes.poo.view;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

import br.ufes.ceunes.poo.model.dao.*;
import br.ufes.ceunes.poo.model.pojo.*;

public class PedidoView {
	private static Scanner entrada = new Scanner(System.in);
	private PedidoDao pedidoDao;
	private ClienteDao clienteDao;
	private ItemDao itemDao;
	private CompraDao compraDao;
	private FornecedorDao fornecedorDao;
	public PedidoView (ClienteDao clienteDao,PedidoDao pedidoDao, ItemDao itemDao, FornecedorDao fornecedorDao){
		this.pedidoDao = pedidoDao;
		this.itemDao = itemDao;
		this.fornecedorDao = fornecedorDao;
		this.clienteDao = clienteDao;
	}

	public static Scanner getEntrada() {
		return entrada;
	}

	public static void setEntrada(Scanner entrada) {
		PedidoView.entrada = entrada;
	}
	
	public void cadastrarPedido() throws IOException {
		//Verificacoes
		long codigo = pedidoDao.gerarCodigo();
		System.out.println("Digite o CPF do cliente: ");
		String cpf = entrada.nextLine();
		if (clienteDao.verificar(cpf) == null){
			System.out.println("Cliente nao cadastrado, Cadastrando novo Cliente.");
			ClienteView clienteView = new ClienteView(clienteDao);
			clienteView.cadastrarCliente();
		}
		System.out.println("Digite o nome do item: ");
		String nomeItem = entrada.nextLine();
		int quantidade;
		if (itemDao.verificar(nomeItem) != null){
			System.out.println("Digite a quantidade de itens: ");
			quantidade = Integer.parseInt(entrada.nextLine());
			pedidoDao.iniciarPedido(codigo, quantidade, cpf, itemDao.verificar(nomeItem).getCodigo());
		}
		else{
			System.out.println("Item nao presente em estoque");
		}
		System.out.println("Deseja cadastrar um novo item? Digite 0 para sim ou 1 para nao.");
		int numero1 = Integer.parseInt(entrada.nextLine());
		while(numero1 == 0){
			System.out.println("Digite o nome do item: ");
			nomeItem = entrada.nextLine();
			if (itemDao.verificar(nomeItem)!= null){
				System.out.println("Digite a quantidade de itens: ");
				quantidade = Integer.parseInt(entrada.nextLine());
				pedidoDao.adicionarNoPedido(codigo, quantidade, itemDao.verificar(nomeItem).getCodigo());
			}
			else {
				System.out.println("Item nao presente no estoque.");
			}
			System.out.println("Deseja cadastrar um novo item? Digite 0 para sim ou 1 para nao.");
			numero1 = Integer.parseInt(entrada.nextLine());
		}
		System.out.println("Deseja fechar o Pedido? Digite 0 para sim ou 1 para nao.");
		int numero2 = Integer.parseInt(entrada.nextLine());
		if(numero2 == 1){
			pedidoDao.salvar(pedidoDao.getLista());
			System.out.println("Pedido cadastrado com sucesso!");
			return;
		}

		while(numero2 == 0){
			System.out.println("Pedido Fechado");
			break;
		}
		
		
		
	}
	
	public void listarPedido() {
		Iterator<Pedido> it;
		ArrayList<Pedido>listar = pedidoDao.getLista(); 
		if (listar.isEmpty() == true) return;
		it = listar.iterator();
		while (it.hasNext()) {  
			Pedido aux = it.next();  
			System.out.println("Item:"+aux.getItens().get(0).getNome());
			System.out.println("Quantidade:"+aux.getQuantidades().get(0));   
		}
		return;
	}
	

}
